//auto gen by paipai.java.augogen ver 3.0.0
//author skyzhuang
//source idl: com.erp.acaccount.dao.idl.AddAndUpdateBankAccountReq.java


#ifndef ERP_ACACCOUNT_DDO_CBANKACCOUNTDDO_BY_AUTOGEN_V5_H
#define ERP_ACACCOUNT_DDO_CBANKACCOUNTDDO_BY_AUTOGEN_V5_H


#include "app_platform/intf_serializable.h"
#include <bitset>
#include <string>
#include <sstream>
#include <iostream>


namespace erp
{
namespace acaccount
{
namespace ddo
{


class CBankAccountDdo : public ISerializable
{
	public:
		std::string m_sLastErrMsg;///<错误信息

		/**
		 *  版本号   
		 *
		 * 版本 >= 0
		 */
		uint32_t dwVersion;

		/**
		 * cVersion_u uflag field
		 */
		uint8_t cVersion_u; //optional flag

		/**
		 * 银行账户SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwBankAccountSysNo;

		/**
		 * cBankAccountSysNo_u uflag field
		 */
		uint8_t cBankAccountSysNo_u; //optional flag

		/**
		 * 父账户SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwParentBankAccountSysNo;

		/**
		 * cParentBankAccountSysNo_u uflag field
		 */
		uint8_t cParentBankAccountSysNo_u; //optional flag

		/**
		 * 银行账号
		 *
		 * 版本 >= 0
		 */
		std::string strBankAccount;

		/**
		 * cBankAccount_u uflag field
		 */
		uint8_t cBankAccount_u; //optional flag

		/**
		 * 账户名称
		 *
		 * 版本 >= 0
		 */
		std::string strBankAccountName;

		/**
		 * cBankAccountName_u uflag field
		 */
		uint8_t cBankAccountName_u; //optional flag

		/**
		 * 开户行
		 *
		 * 版本 >= 0
		 */
		std::string strBranchBank;

		/**
		 * cBranchBank_u uflag field
		 */
		uint8_t cBranchBank_u; //optional flag

		/**
		 * 银行类型
		 *
		 * 版本 >= 0
		 */
		std::string strBankType;

		/**
		 * cBankType_u uflag field
		 */
		uint8_t cBankType_u; //optional flag

		/**
		 * 备注
		 *
		 * 版本 >= 0
		 */
		std::string strComment;

		/**
		 * cComment_u uflag field
		 */
		uint8_t cComment_u; //optional flag

		/**
		 * 单据属性,只读
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetProperty;

		/**
		 * cProperty_u uflag field
		 */
		uint8_t cProperty_u; //optional flag

		/**
		 * 单据属性,设置
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetPropertyInclude;

		/**
		 * cPropertyInclude_u uflag field
		 */
		uint8_t cPropertyInclude_u; //optional flag

		/**
		 * 单据属性,取消
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetPropertyExclude;

		/**
		 * cPropertyExclude_u uflag field
		 */
		uint8_t cPropertyExclude_u; //optional flag

		/**
		 * 单据状态
		 *
		 * 版本 >= 0
		 */
		uint32_t dwStatus;

		/**
		 * cStatus_u uflag field
		 */
		uint8_t cStatus_u; //optional flag

		/**
		 * 创建人SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwCreatorSysNo;

		/**
		 * cCreatorSysNo_u uflag field
		 */
		uint8_t cCreatorSysNo_u; //optional flag

		/**
		 * 创建时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwRowCreatDate;

		/**
		 * cRowCreatDate_u uflag field
		 */
		uint8_t cRowCreatDate_u; //optional flag

		/**
		 * 编辑者SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwModifierSysNo;

		/**
		 * cModifierSysNo_u uflag field
		 */
		uint8_t cModifierSysNo_u; //optional flag

		/**
		 * 编辑时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwRowModifyDate;

		/**
		 * cRowModifyDate_u uflag field
		 */
		uint8_t cRowModifyDate_u; //optional flag




	public:
		CBankAccountDdo():
		dwVersion(0),
		cVersion_u(0),
		ddwBankAccountSysNo(0),
		cBankAccountSysNo_u(0),
		ddwParentBankAccountSysNo(0),
		cParentBankAccountSysNo_u(0),
		cBankAccount_u(0),
		cBankAccountName_u(0),
		cBranchBank_u(0),
		cBankType_u(0),
		cComment_u(0),
		cProperty_u(0),
		cPropertyInclude_u(0),
		cPropertyExclude_u(0),
		dwStatus(0),
		cStatus_u(0),
		ddwCreatorSysNo(0),
		cCreatorSysNo_u(0),
		dwRowCreatDate(0),
		cRowCreatDate_u(0),
		ddwModifierSysNo(0),
		cModifierSysNo_u(0),
		dwRowModifyDate(0),
		cRowModifyDate_u(0) {}
				CBankAccountDdo& operator = (const CBankAccountDdo& obj){

			this->dwVersion = obj.dwVersion;
			this->ddwBankAccountSysNo = obj.ddwBankAccountSysNo;
			this->ddwParentBankAccountSysNo = obj.ddwParentBankAccountSysNo;
			this->strBankAccount = obj.strBankAccount;
			this->strBankAccountName = obj.strBankAccountName;
			this->strBranchBank = obj.strBranchBank;
			this->strBankType = obj.strBankType;
			this->strComment = obj.strComment;
			this->bitsetProperty = obj.bitsetProperty;
			this->bitsetPropertyInclude = obj.bitsetPropertyInclude;
			this->bitsetPropertyExclude = obj.bitsetPropertyExclude;
			this->dwStatus = obj.dwStatus;
			this->ddwCreatorSysNo = obj.ddwCreatorSysNo;
			this->dwRowCreatDate = obj.dwRowCreatDate;
			this->ddwModifierSysNo = obj.ddwModifierSysNo;
			this->dwRowModifyDate = obj.dwRowModifyDate;
			this->cVersion_u = obj.cVersion_u;
			this->cBankAccountSysNo_u = obj.cBankAccountSysNo_u;
			this->cParentBankAccountSysNo_u = obj.cParentBankAccountSysNo_u;
			this->cBankAccount_u = obj.cBankAccount_u;
			this->cBankAccountName_u = obj.cBankAccountName_u;
			this->cBranchBank_u = obj.cBranchBank_u;
			this->cBankType_u = obj.cBankType_u;
			this->cComment_u = obj.cComment_u;
			this->cProperty_u = obj.cProperty_u;
			this->cPropertyInclude_u = obj.cPropertyInclude_u;
			this->cPropertyExclude_u = obj.cPropertyExclude_u;
			this->cStatus_u = obj.cStatus_u;
			this->cCreatorSysNo_u = obj.cCreatorSysNo_u;
			this->cRowCreatDate_u = obj.cRowCreatDate_u;
			this->cModifierSysNo_u = obj.cModifierSysNo_u;
			this->cRowModifyDate_u = obj.cRowModifyDate_u;
			return *this;
		}

	public:


		/**
		 * 是否设置 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 bool  IsVersionSet() const{
				 return  cVersion_u != 0;
		}


		/**
		 * 获取uflag 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 const uint8_t   GetVersionUFlag() const{
				 return  cVersion_u;
		}


		/**
		 * 设置 版本号   
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 void  SetVersion( const uint32_t& sVal, uint8_t cUFlag=1){
				dwVersion = sVal;
				cVersion_u = cUFlag;
		}


		/**
		 * 获取 版本号   
		 * 
		 * @return dwVersion value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetVersion() const {
				return dwVersion;
		}


		/**
		 * 是否设置银行账户SysNo了
		 * 
		 * @param uint64_t:ddwBankAccountSysNo
		 *  
		 * 
		 */
		 bool  IsBankAccountSysNoSet() const{
				 return  cBankAccountSysNo_u != 0;
		}


		/**
		 * 获取uflag银行账户SysNo了
		 * 
		 * @param uint64_t:ddwBankAccountSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetBankAccountSysNoUFlag() const{
				 return  cBankAccountSysNo_u;
		}


		/**
		 * 设置银行账户SysNo
		 * 
		 * @param uint64_t:ddwBankAccountSysNo
		 *  
		 * 
		 */
		 void  SetBankAccountSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwBankAccountSysNo = sVal;
				cBankAccountSysNo_u = cUFlag;
		}


		/**
		 * 获取银行账户SysNo
		 * 
		 * @return ddwBankAccountSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetBankAccountSysNo() const {
				return ddwBankAccountSysNo;
		}


		/**
		 * 是否设置父账户SysNo了
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 bool  IsParentBankAccountSysNoSet() const{
				 return  cParentBankAccountSysNo_u != 0;
		}


		/**
		 * 获取uflag父账户SysNo了
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetParentBankAccountSysNoUFlag() const{
				 return  cParentBankAccountSysNo_u;
		}


		/**
		 * 设置父账户SysNo
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 void  SetParentBankAccountSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwParentBankAccountSysNo = sVal;
				cParentBankAccountSysNo_u = cUFlag;
		}


		/**
		 * 获取父账户SysNo
		 * 
		 * @return ddwParentBankAccountSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetParentBankAccountSysNo() const {
				return ddwParentBankAccountSysNo;
		}


		/**
		 * 是否设置银行账号了
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 bool  IsBankAccountSet() const{
				 return  cBankAccount_u != 0;
		}


		/**
		 * 获取uflag银行账号了
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 const uint8_t   GetBankAccountUFlag() const{
				 return  cBankAccount_u;
		}


		/**
		 * 设置银行账号
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 void  SetBankAccount( const std::string& sVal, uint8_t cUFlag=1){
				strBankAccount = sVal;
				cBankAccount_u = cUFlag;
		}


		/**
		 * 获取银行账号
		 * 
		 * @return strBankAccount value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankAccount() const {
				return strBankAccount;
		}


		/**
		 * 获取银行账号
		 * 
		 * @return strBankAccount value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankAccount() {
				return strBankAccount;
		}


		/**
		 * 是否设置账户名称了
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 bool  IsBankAccountNameSet() const{
				 return  cBankAccountName_u != 0;
		}


		/**
		 * 获取uflag账户名称了
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 const uint8_t   GetBankAccountNameUFlag() const{
				 return  cBankAccountName_u;
		}


		/**
		 * 设置账户名称
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 void  SetBankAccountName( const std::string& sVal, uint8_t cUFlag=1){
				strBankAccountName = sVal;
				cBankAccountName_u = cUFlag;
		}


		/**
		 * 获取账户名称
		 * 
		 * @return strBankAccountName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankAccountName() const {
				return strBankAccountName;
		}


		/**
		 * 获取账户名称
		 * 
		 * @return strBankAccountName value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankAccountName() {
				return strBankAccountName;
		}


		/**
		 * 是否设置开户行了
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 bool  IsBranchBankSet() const{
				 return  cBranchBank_u != 0;
		}


		/**
		 * 获取uflag开户行了
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 const uint8_t   GetBranchBankUFlag() const{
				 return  cBranchBank_u;
		}


		/**
		 * 设置开户行
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 void  SetBranchBank( const std::string& sVal, uint8_t cUFlag=1){
				strBranchBank = sVal;
				cBranchBank_u = cUFlag;
		}


		/**
		 * 获取开户行
		 * 
		 * @return strBranchBank value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBranchBank() const {
				return strBranchBank;
		}


		/**
		 * 获取开户行
		 * 
		 * @return strBranchBank value 类型为:std::string
		 * 
		 */
		 std::string&  GetBranchBank() {
				return strBranchBank;
		}


		/**
		 * 是否设置银行类型了
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 bool  IsBankTypeSet() const{
				 return  cBankType_u != 0;
		}


		/**
		 * 获取uflag银行类型了
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 const uint8_t   GetBankTypeUFlag() const{
				 return  cBankType_u;
		}


		/**
		 * 设置银行类型
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 void  SetBankType( const std::string& sVal, uint8_t cUFlag=1){
				strBankType = sVal;
				cBankType_u = cUFlag;
		}


		/**
		 * 获取银行类型
		 * 
		 * @return strBankType value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankType() const {
				return strBankType;
		}


		/**
		 * 获取银行类型
		 * 
		 * @return strBankType value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankType() {
				return strBankType;
		}


		/**
		 * 是否设置备注了
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 bool  IsCommentSet() const{
				 return  cComment_u != 0;
		}


		/**
		 * 获取uflag备注了
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 const uint8_t   GetCommentUFlag() const{
				 return  cComment_u;
		}


		/**
		 * 设置备注
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 void  SetComment( const std::string& sVal, uint8_t cUFlag=1){
				strComment = sVal;
				cComment_u = cUFlag;
		}


		/**
		 * 获取备注
		 * 
		 * @return strComment value 类型为:std::string
		 * 
		 */
		 const std::string&  GetComment() const {
				return strComment;
		}


		/**
		 * 获取备注
		 * 
		 * @return strComment value 类型为:std::string
		 * 
		 */
		 std::string&  GetComment() {
				return strComment;
		}


		/**
		 * 是否设置单据属性,只读了
		 * 
		 * @param std::bitset<32> :bitsetProperty
		 *  
		 * 
		 */
		 bool  IsPropertySet() const{
				 return  cProperty_u != 0;
		}


		/**
		 * 获取uflag单据属性,只读了
		 * 
		 * @param std::bitset<32> :bitsetProperty
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyUFlag() const{
				 return  cProperty_u;
		}


		/**
		 * 设置单据属性,只读
		 * 
		 * @param std::bitset<32> :bitsetProperty
		 *  
		 * 
		 */
		 void  SetProperty( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetProperty = sVal;
				cProperty_u = cUFlag;
		}


		/**
		 * 获取单据属性,只读
		 * 
		 * @return bitsetProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetProperty() const {
				return bitsetProperty;
		}


		/**
		 * 获取单据属性,只读
		 * 
		 * @return bitsetProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetProperty() {
				return bitsetProperty;
		}


		/**
		 * 是否设置单据属性,设置了
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 bool  IsPropertyIncludeSet() const{
				 return  cPropertyInclude_u != 0;
		}


		/**
		 * 获取uflag单据属性,设置了
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyIncludeUFlag() const{
				 return  cPropertyInclude_u;
		}


		/**
		 * 设置单据属性,设置
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 void  SetPropertyInclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetPropertyInclude = sVal;
				cPropertyInclude_u = cUFlag;
		}


		/**
		 * 获取单据属性,设置
		 * 
		 * @return bitsetPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetPropertyInclude() const {
				return bitsetPropertyInclude;
		}


		/**
		 * 获取单据属性,设置
		 * 
		 * @return bitsetPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetPropertyInclude() {
				return bitsetPropertyInclude;
		}


		/**
		 * 是否设置单据属性,取消了
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 bool  IsPropertyExcludeSet() const{
				 return  cPropertyExclude_u != 0;
		}


		/**
		 * 获取uflag单据属性,取消了
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyExcludeUFlag() const{
				 return  cPropertyExclude_u;
		}


		/**
		 * 设置单据属性,取消
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 void  SetPropertyExclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetPropertyExclude = sVal;
				cPropertyExclude_u = cUFlag;
		}


		/**
		 * 获取单据属性,取消
		 * 
		 * @return bitsetPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetPropertyExclude() const {
				return bitsetPropertyExclude;
		}


		/**
		 * 获取单据属性,取消
		 * 
		 * @return bitsetPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetPropertyExclude() {
				return bitsetPropertyExclude;
		}


		/**
		 * 是否设置单据状态了
		 * 
		 * @param uint32_t:dwStatus
		 *  
		 * 
		 */
		 bool  IsStatusSet() const{
				 return  cStatus_u != 0;
		}


		/**
		 * 获取uflag单据状态了
		 * 
		 * @param uint32_t:dwStatus
		 *  
		 * 
		 */
		 const uint8_t   GetStatusUFlag() const{
				 return  cStatus_u;
		}


		/**
		 * 设置单据状态
		 * 
		 * @param uint32_t:dwStatus
		 *  
		 * 
		 */
		 void  SetStatus( const uint32_t& sVal, uint8_t cUFlag=1){
				dwStatus = sVal;
				cStatus_u = cUFlag;
		}


		/**
		 * 获取单据状态
		 * 
		 * @return dwStatus value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetStatus() const {
				return dwStatus;
		}


		/**
		 * 是否设置创建人SysNo了
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 bool  IsCreatorSysNoSet() const{
				 return  cCreatorSysNo_u != 0;
		}


		/**
		 * 获取uflag创建人SysNo了
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetCreatorSysNoUFlag() const{
				 return  cCreatorSysNo_u;
		}


		/**
		 * 设置创建人SysNo
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 void  SetCreatorSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwCreatorSysNo = sVal;
				cCreatorSysNo_u = cUFlag;
		}


		/**
		 * 获取创建人SysNo
		 * 
		 * @return ddwCreatorSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetCreatorSysNo() const {
				return ddwCreatorSysNo;
		}


		/**
		 * 是否设置创建时间了
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 bool  IsRowCreatDateSet() const{
				 return  cRowCreatDate_u != 0;
		}


		/**
		 * 获取uflag创建时间了
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 const uint8_t   GetRowCreatDateUFlag() const{
				 return  cRowCreatDate_u;
		}


		/**
		 * 设置创建时间
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 void  SetRowCreatDate( const uint32_t& sVal, uint8_t cUFlag=1){
				dwRowCreatDate = sVal;
				cRowCreatDate_u = cUFlag;
		}


		/**
		 * 获取创建时间
		 * 
		 * @return dwRowCreatDate value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetRowCreatDate() const {
				return dwRowCreatDate;
		}


		/**
		 * 是否设置编辑者SysNo了
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 bool  IsModifierSysNoSet() const{
				 return  cModifierSysNo_u != 0;
		}


		/**
		 * 获取uflag编辑者SysNo了
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetModifierSysNoUFlag() const{
				 return  cModifierSysNo_u;
		}


		/**
		 * 设置编辑者SysNo
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 void  SetModifierSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwModifierSysNo = sVal;
				cModifierSysNo_u = cUFlag;
		}


		/**
		 * 获取编辑者SysNo
		 * 
		 * @return ddwModifierSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetModifierSysNo() const {
				return ddwModifierSysNo;
		}


		/**
		 * 是否设置编辑时间了
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 bool  IsRowModifyDateSet() const{
				 return  cRowModifyDate_u != 0;
		}


		/**
		 * 获取uflag编辑时间了
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 const uint8_t   GetRowModifyDateUFlag() const{
				 return  cRowModifyDate_u;
		}


		/**
		 * 设置编辑时间
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 void  SetRowModifyDate( const uint32_t& sVal, uint8_t cUFlag=1){
				dwRowModifyDate = sVal;
				cRowModifyDate_u = cUFlag;
		}


		/**
		 * 获取编辑时间
		 * 
		 * @return dwRowModifyDate value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetRowModifyDate() const {
				return dwRowModifyDate;
		}

		virtual bool Serialize(CByteStreamNetwork& bs){
		
			uint32_t dwMyLen = 0;
			if(bs.isStoring()) //for write in buffer
			{
				//can not larger than 1 M.
				CByteStreamNetwork bsDummy(NULL, 1024 * 1024, false);
				//bsDummy for precheck the xo size...
				bsDummy.isStoring(true);
				Serialize_i(bsDummy);
				dwMyLen = bsDummy.getWrittenLength();
				bs & dwMyLen;
				Serialize_i(bs);
			}
			else
			{    //for read from buffer
				bs & dwMyLen;
				uint32_t dwReadedLen = bs.getReadLength();
				Serialize_i(bs);
				dwReadedLen = bs.getReadLength() - dwReadedLen;
				// dwReadedLen for the size of xo
				if( dwReadedLen > dwMyLen ){
					return false;
				}
				//go through the unwanted mem position...
				bs.goForward( dwMyLen - dwReadedLen );
			}

			return bs.isGood();
		}

		bool Serialize_i(CByteStreamNetwork& bsTmp){

			bsTmp & dwVersion; // 序列化 版本号    类型为uint32_t
			bsTmp & cVersion_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwBankAccountSysNo; // 序列化银行账户SysNo 类型为uint64_t
			bsTmp & cBankAccountSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwParentBankAccountSysNo; // 序列化父账户SysNo 类型为uint64_t
			bsTmp & cParentBankAccountSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankAccount; // 序列化银行账号 类型为String
			bsTmp & cBankAccount_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankAccountName; // 序列化账户名称 类型为String
			bsTmp & cBankAccountName_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBranchBank; // 序列化开户行 类型为String
			bsTmp & cBranchBank_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankType; // 序列化银行类型 类型为String
			bsTmp & cBankType_u; // 序列化uflag 类型为uint8_t
			bsTmp & strComment; // 序列化备注 类型为String
			bsTmp & cComment_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetProperty; // 序列化单据属性,只读 类型为BitSet
			bsTmp & cProperty_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetPropertyInclude; // 序列化单据属性,设置 类型为BitSet
			bsTmp & cPropertyInclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetPropertyExclude; // 序列化单据属性,取消 类型为BitSet
			bsTmp & cPropertyExclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwStatus; // 序列化单据状态 类型为uint32_t
			bsTmp & cStatus_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwCreatorSysNo; // 序列化创建人SysNo 类型为uint64_t
			bsTmp & cCreatorSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwRowCreatDate; // 序列化创建时间 类型为uint32_t
			bsTmp & cRowCreatDate_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwModifierSysNo; // 序列化编辑者SysNo 类型为uint64_t
			bsTmp & cModifierSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwRowModifyDate; // 序列化编辑时间 类型为uint32_t
			bsTmp & cRowModifyDate_u; // 序列化uflag 类型为uint8_t
			return bsTmp.isGood();
		}

		const char* GetLastErrMsg() const{
			return m_sLastErrMsg.c_str();
		}

		bool VerifyBankAccountDdo(){

			if(!IsVersionSet()){
				m_sLastErrMsg = "Miss Param:version";
				return false;
			}

			if(!IsBankAccountSysNoSet()){
				m_sLastErrMsg = "Miss Param:bankAccountSysNo";
				return false;
			}

			if(!IsParentBankAccountSysNoSet()){
				m_sLastErrMsg = "Miss Param:parentBankAccountSysNo";
				return false;
			}

			if(!IsBankAccountSet()){
				m_sLastErrMsg = "Miss Param:bankAccount";
				return false;
			}

			if(!IsBankAccountNameSet()){
				m_sLastErrMsg = "Miss Param:bankAccountName";
				return false;
			}

			if(!IsBranchBankSet()){
				m_sLastErrMsg = "Miss Param:branchBank";
				return false;
			}

			if(!IsBankTypeSet()){
				m_sLastErrMsg = "Miss Param:bankType";
				return false;
			}

			if(!IsCommentSet()){
				m_sLastErrMsg = "Miss Param:comment";
				return false;
			}

			if(!IsPropertySet()){
				m_sLastErrMsg = "Miss Param:property";
				return false;
			}

			if(!IsPropertyIncludeSet()){
				m_sLastErrMsg = "Miss Param:propertyInclude";
				return false;
			}

			if(!IsPropertyExcludeSet()){
				m_sLastErrMsg = "Miss Param:propertyExclude";
				return false;
			}

			if(!IsStatusSet()){
				m_sLastErrMsg = "Miss Param:status";
				return false;
			}

			if(!IsCreatorSysNoSet()){
				m_sLastErrMsg = "Miss Param:creatorSysNo";
				return false;
			}

			if(!IsRowCreatDateSet()){
				m_sLastErrMsg = "Miss Param:rowCreatDate";
				return false;
			}

			if(!IsModifierSysNoSet()){
				m_sLastErrMsg = "Miss Param:modifierSysNo";
				return false;
			}

			if(!IsRowModifyDateSet()){
				m_sLastErrMsg = "Miss Param:rowModifyDate";
				return false;
			}
			return true;
		}

		void DumpData(std::ostream& oss) const{
		
			oss<<"[dwVersion:"<<dwVersion<<"] ";
			oss<<"[cVersion_u:"<<(int)cVersion_u<<"] ";
			oss<<"[ddwBankAccountSysNo:"<<ddwBankAccountSysNo<<"] ";
			oss<<"[cBankAccountSysNo_u:"<<(int)cBankAccountSysNo_u<<"] ";
			oss<<"[ddwParentBankAccountSysNo:"<<ddwParentBankAccountSysNo<<"] ";
			oss<<"[cParentBankAccountSysNo_u:"<<(int)cParentBankAccountSysNo_u<<"] ";
			oss<<"[strBankAccount:"<<strBankAccount<<"] ";
			oss<<"[cBankAccount_u:"<<(int)cBankAccount_u<<"] ";
			oss<<"[strBankAccountName:"<<strBankAccountName<<"] ";
			oss<<"[cBankAccountName_u:"<<(int)cBankAccountName_u<<"] ";
			oss<<"[strBranchBank:"<<strBranchBank<<"] ";
			oss<<"[cBranchBank_u:"<<(int)cBranchBank_u<<"] ";
			oss<<"[strBankType:"<<strBankType<<"] ";
			oss<<"[cBankType_u:"<<(int)cBankType_u<<"] ";
			oss<<"[strComment:"<<strComment<<"] ";
			oss<<"[cComment_u:"<<(int)cComment_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cProperty_u:"<<(int)cProperty_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cPropertyInclude_u:"<<(int)cPropertyInclude_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cPropertyExclude_u:"<<(int)cPropertyExclude_u<<"] ";
			oss<<"[dwStatus:"<<dwStatus<<"] ";
			oss<<"[cStatus_u:"<<(int)cStatus_u<<"] ";
			oss<<"[ddwCreatorSysNo:"<<ddwCreatorSysNo<<"] ";
			oss<<"[cCreatorSysNo_u:"<<(int)cCreatorSysNo_u<<"] ";
			oss<<"[dwRowCreatDate:"<<dwRowCreatDate<<"] ";
			oss<<"[cRowCreatDate_u:"<<(int)cRowCreatDate_u<<"] ";
			oss<<"[ddwModifierSysNo:"<<ddwModifierSysNo<<"] ";
			oss<<"[cModifierSysNo_u:"<<(int)cModifierSysNo_u<<"] ";
			oss<<"[dwRowModifyDate:"<<dwRowModifyDate<<"] ";
			oss<<"[cRowModifyDate_u:"<<(int)cRowModifyDate_u<<"] ";
		
		}

		// codydeng提供,非常好的dump方法 ^-^  。。。。。
		template<typename T>
		T & DumpPlusData(T& oss){
			oss<<"dwVersion:"<<dwVersion;
			oss<<"[cVersion_u:"<<cVersion_u<<"] ";
			oss<<"ddwBankAccountSysNo:"<<ddwBankAccountSysNo;
			oss<<"[cBankAccountSysNo_u:"<<cBankAccountSysNo_u<<"] ";
			oss<<"ddwParentBankAccountSysNo:"<<ddwParentBankAccountSysNo;
			oss<<"[cParentBankAccountSysNo_u:"<<cParentBankAccountSysNo_u<<"] ";
			oss<<"strBankAccount:"<<strBankAccount;
			oss<<"[cBankAccount_u:"<<cBankAccount_u<<"] ";
			oss<<"strBankAccountName:"<<strBankAccountName;
			oss<<"[cBankAccountName_u:"<<cBankAccountName_u<<"] ";
			oss<<"strBranchBank:"<<strBranchBank;
			oss<<"[cBranchBank_u:"<<cBranchBank_u<<"] ";
			oss<<"strBankType:"<<strBankType;
			oss<<"[cBankType_u:"<<cBankType_u<<"] ";
			oss<<"strComment:"<<strComment;
			oss<<"[cComment_u:"<<cComment_u<<"] ";
			oss<<"bitsetProperty:"<<bitsetProperty;
			oss<<"[cProperty_u:"<<cProperty_u<<"] ";
			oss<<"bitsetPropertyInclude:"<<bitsetPropertyInclude;
			oss<<"[cPropertyInclude_u:"<<cPropertyInclude_u<<"] ";
			oss<<"bitsetPropertyExclude:"<<bitsetPropertyExclude;
			oss<<"[cPropertyExclude_u:"<<cPropertyExclude_u<<"] ";
			oss<<"dwStatus:"<<dwStatus;
			oss<<"[cStatus_u:"<<cStatus_u<<"] ";
			oss<<"ddwCreatorSysNo:"<<ddwCreatorSysNo;
			oss<<"[cCreatorSysNo_u:"<<cCreatorSysNo_u<<"] ";
			oss<<"dwRowCreatDate:"<<dwRowCreatDate;
			oss<<"[cRowCreatDate_u:"<<cRowCreatDate_u<<"] ";
			oss<<"ddwModifierSysNo:"<<ddwModifierSysNo;
			oss<<"[cModifierSysNo_u:"<<cModifierSysNo_u<<"] ";
			oss<<"dwRowModifyDate:"<<dwRowModifyDate;
			oss<<"[cRowModifyDate_u:"<<cRowModifyDate_u<<"] ";
			return oss;
		}

		// wileywang提供,树形dump方法 ^-^  。。。。。
		void DumpDataTree(std::ostream& os, int ident = 0)const {
			g_pprint(os, "dwVersion", dwVersion, ident);
			g_pprint(os, "cVersion_u", cVersion_u, ident);
			g_pprint(os, "ddwBankAccountSysNo", ddwBankAccountSysNo, ident);
			g_pprint(os, "cBankAccountSysNo_u", cBankAccountSysNo_u, ident);
			g_pprint(os, "ddwParentBankAccountSysNo", ddwParentBankAccountSysNo, ident);
			g_pprint(os, "cParentBankAccountSysNo_u", cParentBankAccountSysNo_u, ident);
			g_pprint(os, "strBankAccount", strBankAccount, ident);
			g_pprint(os, "cBankAccount_u", cBankAccount_u, ident);
			g_pprint(os, "strBankAccountName", strBankAccountName, ident);
			g_pprint(os, "cBankAccountName_u", cBankAccountName_u, ident);
			g_pprint(os, "strBranchBank", strBranchBank, ident);
			g_pprint(os, "cBranchBank_u", cBranchBank_u, ident);
			g_pprint(os, "strBankType", strBankType, ident);
			g_pprint(os, "cBankType_u", cBankType_u, ident);
			g_pprint(os, "strComment", strComment, ident);
			g_pprint(os, "cComment_u", cComment_u, ident);
			g_pprint(os, "bitsetProperty", bitsetProperty, ident);
			g_pprint(os, "cProperty_u", cProperty_u, ident);
			g_pprint(os, "bitsetPropertyInclude", bitsetPropertyInclude, ident);
			g_pprint(os, "cPropertyInclude_u", cPropertyInclude_u, ident);
			g_pprint(os, "bitsetPropertyExclude", bitsetPropertyExclude, ident);
			g_pprint(os, "cPropertyExclude_u", cPropertyExclude_u, ident);
			g_pprint(os, "dwStatus", dwStatus, ident);
			g_pprint(os, "cStatus_u", cStatus_u, ident);
			g_pprint(os, "ddwCreatorSysNo", ddwCreatorSysNo, ident);
			g_pprint(os, "cCreatorSysNo_u", cCreatorSysNo_u, ident);
			g_pprint(os, "dwRowCreatDate", dwRowCreatDate, ident);
			g_pprint(os, "cRowCreatDate_u", cRowCreatDate_u, ident);
			g_pprint(os, "ddwModifierSysNo", ddwModifierSysNo, ident);
			g_pprint(os, "cModifierSysNo_u", cModifierSysNo_u, ident);
			g_pprint(os, "dwRowModifyDate", dwRowModifyDate, ident);
			g_pprint(os, "cRowModifyDate_u", cRowModifyDate_u, ident);
		}
		
		//提供ToString借口，默认为DumpData格式，请按需要进行修改
		std::string ToString() const{
			std::stringstream ss;
			DumpData(ss);
			return ss.str();
		}

/**
 ********************以下信息是每个版本的字段********************
 */

};

}
}
}

#endif /* ERP_ACACCOUNT_DDO_CBANKACCOUNTDDO_BY_AUTOGEN_V5_H */
